package com.seeyon.apps.brwh.customFieldCtrl;

import java.util.List;

import org.apache.commons.logging.Log;

import com.seeyon.cap4.form.bean.fieldCtrl.FormFieldCustomCtrl;
import com.seeyon.ctp.common.log.CtpLogFactory;
import com.seeyon.ctp.util.StringUtil;
import com.seeyon.ctp.util.UUIDLong;

/**
 * 合同下载按钮
 * @author zgh
 * @version 1.0 Create by 2024/6/12 10:33
 */
public class SealBreakBtn extends FormFieldCustomCtrl {
  private static final Log log = CtpLogFactory.getLog(SealBreakBtn.class);

  /**
   * 返回自定义控件唯一的key，控件key可以使用平台www.seeyon.com.utils.UUIDUtil.getUUIDString()接口	生成一个uuid，将此Id作为控件的key
   * @return
   */
  @Override
  public String getKey() {
    return "8337845202406190934";
  }

  /**
   * 获取控件名称
   * @return
   */
  @Override
  public String getText() {
    return "e签宝电子签章解约";
  }

  /**
   * 定义此自定义控件是否支持批量刷新
   *
   * @return
   */
  @Override
  public boolean canBathUpdate() {
    return false;
  }
  /**
   * 此控件是否是附件类控件
   *
   * @return
   */
  @Override
  public boolean isAttachment() {
    return false;
  }

  /**
   * 新建的时候生成此自定义控件的值，此值会存放在对应动态表的对应字段上，一般情况下只有需要上传附件类的自定义控件才需要此接口。
   *
   * @param oldVal
   * @return
   */
  @Override
  public Object genVal(Object oldVal) {
    if (StringUtil.checkNull(String.valueOf(oldVal))) {
      return UUIDLong.longUUID();
    } else {
      return oldVal;
    }
  }

  @Override
  public List<String[]> getListShowDefaultVal(Integer integer) {
    return null;
  }

  /**
   * 初始值生成接口
   */
  @Override
  public String[] getDefaultVal(String s) {
    return new String[0];
  }

  /**
   * 控件初始化接口，此接口在控件初始化的时候，会调用，主要用于定义控件所属插件id、在表单编辑器中的图标、表单编辑器中有哪些属性可以设置。
   * 使用举例：在接口中定义自定义控件在在表单编辑器中有哪些控件属性需要配置
   */
  @Override
  public void init() {
    this.setPluginId("formInvoiceBtn");//控件所属插件id
    this.setIcon("cap-icon-e-invoice");//控件在表单编辑器中的图标
    log.info("自定义控件" + this.getText() + "init执行开始");
    //        ParamDefinition eivoiceDef = new ParamDefinition();//控件属性设置定义对象
    //        eivoiceDef.setDialogUrl("apps_res/cap/customCtrlResources/formEinvoiceCtrlResources/html/EinvoiceSetting.html");//控件属性点击之后弹出的设置对话框的url
    //        eivoiceDef.setDisplay("com.cap.ctrl.einvoice.paramtext");//如果要做国际化 这个地方只能存key
    //        eivoiceDef.setName("mapping");//控件属性名
    //        eivoiceDef.setParamType(Enums.ParamType.button);//控件属性类型
    //        addDefinition(eivoiceDef);
    log.info("自定义控件" + this.getText() + "init执行结束，params.size:" + super.params.size());
  }

  /**
   * 定义PC端自定义控件运行态资源注入信息
   * path:文件夹路径
   * jsUri:定义PC端表单运行态加载第三方JavaScript的路径
   * cssUri：定义PC端表单运行态加载第三方CSS的路径
   * initMethod:定义PC端表单运行态第三方js入口方法名称
   * nameSpace：此自定义控件前端运行时的命名空间，可以参照一下写法来定义命名空间
   * @return
   */
  @Override
  public String getPCInjectionInfo() {
    return "{path:'apps_res/cap/customCtrlResources/sealBtnResources/',jsUri:'js/sealBreakBtn.js',initMethod:'init',nameSpace:'field_" + this.getKey() + "'}";
  }

  /**
   * 获取移动端自定义控件运行态资源注入信息
   * path：'http://'+m3应用包mainifest.json中的urlSchemes的值+'v'+m3应用包mainifest.json中的version的值
   * weixinpath: 微信端打开的时候使用的m3/apps/v5/自定义控件移动端资源目录名称/,weixinpath配置的就是此自定义控件移动端资源目录名称
   * jsUri:移动端表单运行态加载第三方JavaScript的路径
   * initMethod:定义M3端表单运行态第三方js入口方法名称
   * * nameSpace:定义M3端表单运行态命名空间
   *
   * @return
   */
  @Override
  public String getMBInjectionInfo() {
    return "{path:'http://einvoice.v5.cmp/v1.0.0/',weixinpath:'invoice',jsUri:'js/formEinvoiceMbRuning.js',initMethod:'init',nameSpace:'field_"+this.getKey()+"'}";

  }
  /**
   * 定义控件对应数据库所需长度
   * 注意：一旦自定义控件长度定好，上线部署到OA环境中之后，
   * 此接口返回的长度不允许改变，因为上线之后如果有表单使用
   * 了此自定义控件，就会在数据库中创建字段长度为此指定长度
   * 的数据列。
   *
   * @return
   */
  @Override
  public String getFieldLength() {
    return "255";
  }

  /**
   * 是否支持套红，自定义控件默认false，如果支持需要重新接口返回true
   *
   * @return
   */
  @Override
  public boolean canInjectionWord() {
    return false;
  }


}
